<?php
class DB {
  private $db_host = "localhost"; //Khai báo thông tin host database 
  private $db_user = "root"; //Khai báo thông tin username database 
  private $db_pass = ""; //Khai báo thông tin password database 
  private $db_name = "quangcaosp"; // Khai báo thông tin name database 
  private $result = null; //Thuộc tính result trả về kết quả của query. 
  private $magic_quotes_active;
  private $real_escape_string_exists;

  function __construct() {
	$this->con = mysql_connect($this->db_host, $this->db_user, $this->db_pass) or die("Database connection failed: " . mysql_error()); 
	mysql_select_db($this->db_name, $this->con) or die("Database selection failed: " . mysql_error());
	mysql_query("SET NAMES 'utf8'");
    $this->magic_quotes_active = get_magic_quotes_gpc();
    $this->real_escape_string_exists = function_exists("mysql_real_escape_string");
  }

  function disConnect() {
    mysql_close($this->con);
  }

  function sql($value) {
    //Kiểm tra xem version PHP bạn sử dụng có hiểu hàm mysql_real_escape_string() hay ko 

    if ($this->real_escape_string_exists) {
      //Trường hợp sử dụng PHP v4.3.0 trở lên 
      //PHP hiểu hàm mysql_real_escape_string() 

      if ($this->magic_quotes_active) {
        //Trong trường hợp PHP đã hỗ trợ hàm get_magic_quotes_gpc() 
        //Ta sử dụng hàm stripslashes để bỏ qua các dấu slashes 

        $value = stripslashes($value);
      }
      $value = mysql_real_escape_string($value);
    } else {
      //Trường hợp dùng cho các version PHP dưới 4.3.0 
      //PHP không hiểu hàm mysql_real_escape_string() 

      if (!$this->magic_quotes_active) {
        //Trong trường hợp PHP không hỗ trợ hàm get_magic_quotes_gpc() 
        //Ta sử dụng hàm addslashes để thêm các dấu slashes vào giá trị 
        $value = addslashes($value);
      }
      // Nếu hàm get_magic_quotes_gpc() đã active có nghĩa là các dấu slashes đã tồn tại rồi 
    }
    return $value;
  }
  
  function query($s = '', $rows = false, $organize = true) {
    if (!$q = mysql_query($s, $this->con))
      return false;
    if ($rows !== false)
      $rows = intval($rows);
    $rez = array();
    $count = 0;
    $type = $organize ? MYSQL_NUM : MYSQL_ASSOC;
    while (($rows === false || $count < $rows) && $line = mysql_fetch_array($q, $type)) {
      if ($organize) {
        foreach ($line as $field_id => $value) {
          $table = mysql_field_table($q, $field_id);
          if ($table === '')
            $table = 0;
          $field = mysql_field_name($q, $field_id);
          $rez[$count][$table][$field] = $value;
        }
      } else {
        $rez[$count] = $line;
      }
      ++$count;
    }
    if (!mysql_free_result($q))
      return false;
    return $rez;
  }
  
  //Chạy câu truy vấn query 
  function execute($sql = '') {
    $this->result = mysql_query($sql, $this->con);
    if (!$this->result) {
      $output = "Database query failed: " . mysql_error() . "<br />";
      die($output);
    }
    return $this->result;
  }

  function row($options) {
    $default = array(
    'table' => '',
    'fields' => '*',
    'condition' => '1',
    'order' => '1'
    );
    $options = array_merge($default, $options);
    $sql = "SELECT {$options['fields']} FROM {$options['table']} WHERE {$options['condition']} ORDER BY {$options['order']}";
    $result = $this->query($sql, 1, false);
    if (empty($result[0]))
      return false;
    return $result[0];
  }

  function get($table = null, $field = null, $conditions = '1') {
    if ($table === null || $field === null)
      return false;
    $result = $this->row(array(
    'table' => $table,
    'condition' => $conditions,
    'fields' => $field
        ));
    if (empty($result[$field]))
      return false;
    return $result[$field];
  }
  //select(array('table' => 'tenbang1,tenbang2','condition' => 'dieukien=?'));
  function select($options) {
    $default = array(
    'table' => '',
    'fields' => '*',
    'condition' => '1',
    'order' => '1',
    'limit' => 50
    );
    $options = array_merge($default, $options);
    $sql = "SELECT {$options['fields']} FROM {$options['table']} WHERE {$options['condition']} ORDER BY {$options['order']} LIMIT {$options['limit']}";
    return $this->execute($sql);
  }
//update('tenbang',array('field' => change_value_field),'dieukien='.$giatri_dieukien);
  function update($table = null, $array_of_values = array(), $conditions = 'FALSE') {
    if ($table === null || empty($array_of_values))
      return false;
    $what_to_set = array();
    foreach ($array_of_values as $field => $value) {
      if (is_array($value) && !empty($value[0]))
        $what_to_set[] = "`$field`='{$value[0]}'";
      else
        $what_to_set [] = "`$field`='" . mysql_real_escape_string($value, $this->con) . "'";
    }
    $what_to_set_string = implode(',', $what_to_set);
    return $this->execute("UPDATE $table SET $what_to_set_string WHERE $conditions");
  }
  //insert('tenbang',array('field' => new_value_field));
  function insert($table = null, $array_of_values = array()) {
    if ($table === null || empty($array_of_values) || !is_array($array_of_values))
      return false;
    $fields = array();
    $values = array();
    foreach ($array_of_values as $id => $value) {
      $fields[] = $id;
      if (is_array($value) && !empty($value[0]))
        $values[] = $value[0];
      else
        $values[] = "'" . mysql_real_escape_string($value, $this->con) . "'";
    }
    $s = "INSERT INTO $table (" . implode(',', $fields) . ') VALUES (' . implode(',', $values) . ')';
    if (mysql_query($s, $this->con))
      return mysql_insert_id($this->con);
    return false;
  }
//delete('tenbang','dieukien='.$giatri_dieukien);
  function delete($table = null, $conditions = 'FALSE') {
    if ($table === null)
      return false;
    return $this->execute("DELETE FROM $table WHERE $conditions");
  }

}
//http://mbe.ro/2009/08/30/fast-and-easy-php-mysql-class/
?>